﻿//在 C# 中，接口可以被结构体（struct）或枚举（enum）实现。这意味着结构体和枚举可以遵循接口定义的契约，并实现接口中定义的成员。

Console.WriteLine(123);
public interface IShape
{
    void Draw();
}

public struct Rectangle : IShape
{
    public void Draw()
    {
        // 实现绘制矩形的代码
    }
}
//枚举类型本身不能直接实现接口，因为枚举是一种特殊的值类型，它主要用于定义一组命名的常量。然而，你可以为枚举的成员（枚举值）分别实现接口。这样可以让枚举的每个成员都具有特定的行为。
public interface IFlavor
{
    void PrintFlavor();
}

public enum IceCreamFlavor
{
    Vanilla,
    Chocolate,
    Strawberry
}

public static class FlavorExtensions
{
    public static void PrintFlavor(this IceCreamFlavor flavor)
    {
        switch (flavor)
        {
            case IceCreamFlavor.Vanilla:
                Console.WriteLine("Vanilla flavor");
                break;
            case IceCreamFlavor.Chocolate:
                Console.WriteLine("Chocolate flavor");
                break;
            case IceCreamFlavor.Strawberry:
                Console.WriteLine("Strawberry flavor");
                break;
            default:
                throw new ArgumentOutOfRangeException(nameof(flavor), flavor, null);
        }
    }
}